home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 25: Programming / pc_actual_25.iso / Delphi / Duck Report / _SETUP.1 / DQLinkOp.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-12-02  |  3.7 KB  |  142 lines

  1. unit DQLinkOp;
  2.  
  3. interface
  4.  
  5. uses
  6.     Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, ExtCtrls, Buttons, DQLinkCtrl;
  8. //  StdUtil
  9.  
  10. type
  11.   TFormDQLinkOption = class(TForm)
  12.     GroupBox1: TGroupBox;
  13.     Label1: TLabel;
  14.     LForm: TLabel;
  15.     Label2: TLabel;
  16.     LTo: TLabel;
  17.     LBLink: TListBox;
  18.     BBOK: TBitBtn;
  19.     BBHelp: TBitBtn;
  20.     CBType: TComboBox;
  21.     Label3: TLabel;
  22.     procedure FormShow(Sender: TObject);
  23.     procedure FormKeyDown(Sender: TObject; var Key: Word;
  24.       Shift: TShiftState);
  25.     procedure BBOKClick(Sender: TObject);
  26.     procedure BBHelpClick(Sender: TObject);
  27.     procedure FormCreate(Sender: TObject);
  28.     procedure LBLinkClick(Sender: TObject);
  29.     procedure CBTypeChange(Sender: TObject);
  30.   private
  31.      bType:        Boolean;
  32.      Function        GetString (LinkPtr: RQueryLinkPtr): String;
  33.   public
  34.         TableLink:                TList;      
  35.   end;
  36.  
  37. var
  38.   FormDQLinkOption: TFormDQLinkOption;
  39.  
  40. implementation
  41. {$R *.DFM}
  42. Procedure TFormDQLinkOption.FormCreate(Sender: TObject);
  43. Begin
  44.     TableLink    := nil;
  45. End;
  46. Procedure TFormDQLinkOption.FormShow(Sender: TObject);
  47. Var
  48.     i:            Integer;
  49.   St:        String;
  50.   LinkPtr:    RQueryLinkPtr;
  51. Begin
  52.     if TableLink = nil Then Exit;
  53.   LBLink.Items.BeginUpdate;
  54.   Try
  55.       For i := 0 To TableLink.Count - 1 Do
  56.       Begin
  57.             LinkPtr    := RQueryLinkPtr (TableLink[i]);
  58.             St    := GetString (LinkPtr);
  59.             LBLink.Items.Add (St);
  60.       End;
  61.   Finally
  62.   LBLink.Items.EndUpdate;
  63.     End;
  64. End;
  65. Procedure TFormDQLinkOption.FormKeyDown(Sender: TObject; var Key: Word;
  66.   Shift: TShiftState);
  67. Begin
  68.     Case Key of
  69.       VK_RETURN:    BBOKClick (nil);
  70.       VK_F1:        BBHelpClick (nil);
  71.   End;
  72. End;
  73. Procedure TFormDQLinkOption.BBOKClick(Sender: TObject);
  74. Begin
  75.     Close;
  76.   ModalResult    := mrOK;
  77. End;
  78. Procedure TFormDQLinkOption.BBHelpClick(Sender: TObject);
  79. Begin
  80.     Beep;
  81. End;
  82. Function TFormDQLinkOption.GetString (LinkPtr: RQueryLinkPtr): String;
  83. Begin
  84.     Result    := '';
  85.     Case LinkPtr^.QueryLinkType of
  86.       tltEqual,
  87.      tltGreater,
  88.      tltLess,
  89.      tltGreaterEqual,
  90.       tltLessEqual,
  91.      tltNotEqual:
  92.          Result    := LinkPtr^.MAlias + '.' + LinkPtr^.MField;
  93.     End;
  94.   Case LinkPtr^.QueryLinkType of
  95.       tltEqual:                Result    := Result + ' = ';
  96.      tltGreater:                Result    := Result + ' > ';
  97.      tltLess:                    Result    := Result + ' < ';
  98.      tltGreaterEqual:        Result    := Result + ' >= ';
  99.       tltLessEqual:            Result    := Result + ' <= ';
  100.      tltNotEqual:            Result    := Result + ' <> ';
  101.      tltLeftOuter:            Result    := Result + ' LEFT OUTER JOIN ON ';
  102.      tltRightOuter:            Result    := Result + ' RIGHT OUTER JOIN ON ';
  103.     End;
  104.   Case LinkPtr^.QueryLinkType of
  105.      tltLeftOuter,
  106.      tltRightOuter:
  107.          Begin
  108.             Result    := Result + LinkPtr^.MAlias + '.' + LinkPtr^.MField;
  109.            Result    := Result + ' = ';
  110.         End;
  111.     End;
  112.   Result    := Result + LinkPtr^.DAlias + '.' + LinkPtr^.DField;
  113. End;
  114. Procedure TFormDQLinkOption.LBLinkClick(Sender: TObject);
  115. Var
  116.     LinkPtr:    RQueryLinkPtr;
  117. Begin
  118.     if LBLink.ItemIndex < 0 Then Exit;
  119.     LinkPtr    := RQueryLinkPtr (TableLink.Items[LBLink.ItemIndex]);
  120.     LForm.Caption        := LinkPtr^.MAlias + '.' + LinkPtr^.MField;
  121.     LTo.Caption            := LinkPtr^.DAlias + '.' + LinkPtr^.DField;
  122.   bType                    := TRUE;
  123.     CBType.ItemIndex    := Integer (LinkPtr^.QueryLinkType);
  124.     bType                    := FALSE;
  125. End;
  126. Procedure TFormDQLinkOption.CBTypeChange(Sender: TObject);
  127. Var
  128.     LinkPtr:    RQueryLinkPtr;
  129.   iTemp:    Integer;
  130. Begin
  131.     if bType Then Exit;
  132.   iTemp        := LBLink.ItemIndex;
  133.     if iTemp < 0 Then Exit;
  134.  
  135.     LinkPtr    := RQueryLinkPtr (TableLink.Items[LBLink.ItemIndex]);
  136.     LinkPtr^.QueryLinkType    := TQueryLinkType (CBType.ItemIndex);
  137.   LBLink.Items.Strings[LBLink.ItemIndex]    := GetString (LinkPtr);
  138.   LBLink.ItemIndex    := iTemp;
  139. End;
  140.  
  141. End.
  142.